Skip to main content
POST
/
v1
/
query
/
get-vault-upgrade-payload-passkey
Get vault upgrade payload (Base -> Ethereum)
curl --request POST \
  --url https://api.example.com/v1/query/get-vault-upgrade-payload-passkey \
  --header 'Content-Type: application/json' \
  --header 'X-Pubkey: <x-pubkey>' \
  --header 'X-Pubkey, X-Timestamp, X-Signature: <api-key>' \
  --header 'X-Signature: <x-signature>' \
  --header 'X-Timestamp: <x-timestamp>' \
  --data '
{
  "accountId": "550e8400-e29b-41d4-a716-446655440000",
  "sourceVaultAddr": "0x061b3aff8e21a9d194ce43cEfc20A0eFf122Ec69"
}
'
{
  "bodyToSign": {
    "type": "ACTIVITY_TYPE_SIGN_RAW_PAYLOADS",
    "timestampMs": "<string>",
    "organizationId": "<string>",
    "parameters": {
      "signWith": "<string>",
      "payloads": [
        "<string>"
      ],
      "encoding": "PAYLOAD_ENCODING_HEXADECIMAL",
      "hashFunction": "HASH_FUNCTION_NO_OP"
    }
  },
  "transactionId": "550e8400-e29b-41d4-a716-446655440000",
  "sourceAmount": "123.456789",
  "destinationAmount": "123.456789",
  "destinationVaultAddr": "0x2F99e35Ea811F3cC230B26dfF817604B5D4B6e38"
}

Authorizations

X-Pubkey, X-Timestamp, X-Signature
string
header
required

Headers

X-Pubkey
string
required

Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd

X-Timestamp
string
required

Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826

X-Signature
string
required

ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: {timestamp}{METHOD}{path_and_query}{json_body}. Example: 0x3045022100...

Body

application/json

Request body containing the account ID and source vault address (on Base).

Request body for initiating a vault upgrade (Base -> Ethereum)

accountId
string<uuid>
required

A UUID string

Example:

"550e8400-e29b-41d4-a716-446655440000"

sourceVaultAddr
string
required

The address of the source vault on Base (8453)

Example:

"0x061b3aff8e21a9d194ce43cEfc20A0eFf122Ec69"

Response

Payloads to sign created successfully

Response containing the two raw payloads to sign (withdraw from Base and deposit on Ethereum) in one passkey prompt.

bodyToSign
object
required

The object that needs to be signed by the end user to make a batch of transactions.

transactionId
string<uuid>
required

A UUID string

Example:

"550e8400-e29b-41d4-a716-446655440000"

sourceAmount
string
required

A high-precision decimal number represented as a string

Example:

"123.456789"

destinationAmount
string
required

A high-precision decimal number represented as a string

Example:

"123.456789"

destinationVaultAddr
string
required

The destination vault address on Ethereum.

Example:

"0x2F99e35Ea811F3cC230B26dfF817604B5D4B6e38"